<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>微信授权</title>
    <style>
        .loading {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            text-align: center;
        }
        .dialog-overlay {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: rgba(0, 0, 0, 0.7);
            display: flex;
            justify-content: center;
            align-items: center;
        }
        .dialog-content {
            background: white;
            padding: 20px;
            border-radius: 8px;
            width: 80%;
            max-height: 80vh;
            overflow-y: auto;
        }
        .dialog-title {
            font-size: 18px;
            font-weight: bold;
            margin-bottom: 15px;
        }
        .dialog-message {
            font-size: 14px;
            line-height: 1.5;
            margin-bottom: 20px;
            text-align: left;
        }
        .dialog-button {
            background: #07C160;
            color: white;
            border: none;
            padding: 8px 20px;
            border-radius: 4px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="loading">
        <p>正在获取授权...</p>
    </div>

    <script>
        // 获取URL参数
        function getUrlParam(name) {
            const urlParams = new URLSearchParams(window.location.search);
            return urlParams.get(name);
        }

        // 显示授权说明对话框
        function showAuthDialog() {
            return new Promise((resolve) => {
                const dialog = document.createElement('div');
                dialog.className = 'dialog-overlay';
                dialog.innerHTML = `
                    <div class="dialog-content">
                        <div class="dialog-title">微信网页授权说明</div>
                        <div class="dialog-message">
                            尊敬的用户您好，<br><br>
                            为了保护您的个人隐私，我们非常重视您对于获取信息范围和目的的了解。在微信网页授权规范中，我们提供了以下清晰、准确的说明，以帮助您了解我们获取信息的范围和目的。<br><br>
                            <b>获取信息的范围：</b><br>
                            在您授权使用微信网页登录时，我们将仅获取您在微信中公开的基本信息，包括昵称、头像、地区和性别等。我们不会获取您的手机号码、银行账号、密码等敏感信息，也不会访问您微信中的聊天记录和朋友列表等私密信息。<br><br>
                            <b>获取信息的目的：</b><br>
                            我们获取您的基本信息是为了提供更好的服务和个性化体验，具体目的包括但不限于：<br>
                            1. 用于身份认证，确保您的账号安全；<br>
                            2. 显示您的昵称和头像，提升交互体验；<br><br>
                            请注意，我们承诺仅在授权范围内使用您的信息，不会非法获取、泄露或滥用您的个人信息。同时，您有权随时撤销授权并删除您的个人信息。
                        </div>
                        <button class="dialog-button">确认并继续</button>
                    </div>
                `;
                document.body.appendChild(dialog);

                dialog.querySelector('.dialog-button').onclick = () => {
                    dialog.remove();
                    resolve();
                };
            });
        }

        // 获取微信授权
        async function getWxAuth() {
            try {
                // 获取当前页面URL（需要进行encode）
                const currentUrl = window.location.href.split('#')[0]; // 去除hash部分
                const redirectUri = encodeURIComponent(currentUrl);
                const appId = 'wx74efa08c51db4e4e';
                const scope = 'snsapi_userinfo';
                
                // 构建授权URL
                // const authUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=${scope}&state=STATE#wechat_redirect`;

                // 检查是否已经有code参数
                const code = getUrlParam('code');
                if (!code) {
                    console.log('未获取到code，准备重定向到授权页面');
                    
                    // 开发环境判断
                    const urlReg = /^((http|https):\/\/)(127\.0\.0\.1|localhost|192\.168\.\d{1,3}\.\d{1,3})(:[0-9]+)$/;
                    if (urlReg.test(`${window.location.protocol}//${window.location.host}`)) {
                        console.log('开发环境，使用测试数据');
                        await handleWxCallback(null, true);
                        return;
                    }

                    // 显示授权说明
                    await showAuthDialog();
                    
                    console.log('重定向URL:', authUrl);
                    window.location.replace(authUrl);
                    return;
                }

                console.log('获取到code:', code);
                await handleWxCallback(code);
            } catch (error) {
                console.error('授权过程发生错误:', error);
                alert('授权过程发生错误: ' + error.message);
            }
        }

        // 处理微信授权回调
        async function handleWxCallback(code, isDev = false) {
            try {
                let userInfo;
                
                if (isDev) {
                    // 开发环境使用测试数据
                    userInfo = {
                        openid: 'oMg6O6aT2V6LHdSmGcx_MALYGNk4',
                        nickname: '演示',
                        headimgurl: ''
                    };
                } else {
                    // 调用后端接口获取用户信息
                    const response = await fetch('https://nephropathy.zenzer.cn:3286/zyjv3-mp-submit-inspection-api/h5/wxAuth', {
                        method: 'POST',
                        headers: {
                            'Content-Type': 'application/json'
                        },
                        body: JSON.stringify({ 
                            code: code,
                            appId: 'wx74efa08c51db4e4e'
                        })
                    });

                    const result = await response.json();
                    console.log('授权结果:', result);

                    if (result.code !== 0) {
                        throw new Error(result.msg || '授权失败');
                    }

                    userInfo = result.data;
                }

                // 获取支付参数
                const payParam = getUrlParam('payParam');
                if (!payParam) {
                    throw new Error('缺少支付参数');
                }

                // 清理URL中的code参数
                const newUrl = `${window.location.protocol}//${window.location.host}${window.location.pathname}?payParam=${payParam}`;
                window.history.replaceState('', '', newUrl);

                // 授权成功后跳转到支付页面
                window.location.href = `index.html?payParam=${payParam}&openid=${userInfo.openid}`;
            } catch (error) {
                console.error('获取用户信息失败:', error);
                alert('获取用户信息失败: ' + error.message);
            }
        }

        // 页面加载完成后执行
        document.addEventListener('DOMContentLoaded', getWxAuth);
    </script>
</body>
</html>